Nginx 高级配置

您所在的位置:网站首页 牛奶 涨气 Nginx 高级配置

Nginx 高级配置

#Nginx 高级配置| 来源: 网络整理| 查看: 265

              Nginx高级配置-https功能

                                       作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.HTTPS工作过程

1>.SSL/TLS

SSL(Secure Socket Layer)/TLS(Transport Layer Security):   1995:     SSL 2.0 Netscape(该浏览器是付费的,这也就是后来为什么IE,Googel浏览器相继横空出世的一个重要因素吧,这个360公司开发的免费的杀毒软件一样,直接让一些传统的杀毒软件公司黄掉了)   1996:     SSL 3.0   1999:     TLS 1.0   2006:     TLS 1.1 IETF(Internet工程任务组) RFC 4346   2008:     TLS 1.2 当前主流使用   2015:     TLS 1.3    功能:   机密性:     对数据进行加密。   认证:     验证身份。   完整性:     数据在传输过程中没有被破坏。   重放保护:     数据在发送中不允许重新发送,什么是重新发送?举个例子,A和B在通信过程中,若A往B发送数据请求登录验证,正常情况下会使用B的公钥对数据进行加密,并发送给B。若A的数据发送给B之前,被C来拦截下来了,由于数据已经被A使用B的公钥加密过了,因此C是破解不了数据的。但是C如果能将这个数据的IP头部信息修改成自己的IP地址并重新发送给B,那么C就间接实现了登录操作,测试A用户还一脸懵逼中。 两阶段协议,分为握手阶段和应用阶段   握手阶段(协商阶段):     客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。   应用阶段:     在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

2>.HTTPS

  Web网站的登录页面都是使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。   服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。

3>.HTTPS工作过程

https 实现过程如下:   1>.客户端发起HTTPS请求:     客户端访问某个web端的https地址,一般都是443端口   2>.服务端的配置:     采用https协议的服务器必须要有一套证书,可以通过一些组织申请,也可以自己制作,目前国内很多网站都自己做的,当你访问一个网站的时候提示证书不可信任就表示证书是自己做的,证书就是一个公钥和私钥匙,就像一把锁和钥匙,正常情况下只有你的钥匙可以打开你的锁,你可以把这个送给别人让他锁住一个箱子,里面放满了钱或秘密,别人不知道里面放了什么而且别人也打不开,只有你的钥匙是可以打开的。   3>.传送证书:     服务端给客户端传递证书,其实就是公钥,里面包含了很多信息,例如证书得到颁发机构、过期时间等等。   4>.客户端解析证书:     这部分工作是有客户端完成的,首先会验证公钥的有效性,比如颁发机构、过期时间等等,如果发现异常则会弹出一个警告框提示证书可能存在问题,如果证书没有问题就生成一个随机值,然后用证书对该随机值进行加密,就像2步骤所说把随机值锁起来,不让别人看到。   5>.传送4步骤的加密数据:     就是将用证书加密后的随机值传递给服务器,目的就是为了让服务器得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值进行加密解密了。   6>.服务端解密信息:     服务端用私钥解密5步骤加密后的随机值之后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,对称加密就是将信息和私钥通过算法混合在一起,这样除非你知道私钥,不然是无法获取其内部的内容,而正好客户端和服务端都知道这个私钥,所以只要机密算法够复杂就可以保证数据的安全性。   7>.传输加密后的信息:     服务端将用私钥加密后的数据传递给客户端,在客户端可以被还原出原数据内容。   8>.客户端解密信息:     客户端用之前生成的私钥获解密服务端传递过来的数据,由于数据一直是加密的,因此即使第三方获取到数据也无法知道其详细内容。

二.nginx的ssl配置

  nginx的https功能基于模块ngx_http_ssl_module实现,因此如果是编译安装的nginx要使用参数ngx_http_ssl_module开启ssl功能。   但是作为nginx的核心功能,yum安装的nginx默认就是开启的,编译安装的nginx需要指定编译参数--with-http_ssl_module开启。   官方文档:     https://nginx.org/en/docs/http/ngx_http_ssl_module.html   关键参数配置说明如下:     ssl on | off;       为指定的虚拟主机配置是否启用ssl功能,此功能在1..0废弃,使用listen [ssl]替代。     ssl_certificate /path/to/file;       当前虚拟主机使用使用的公钥文件,一般是crt文件     ssl_certificate_key /path/to/file;       当前虚拟主机使用的私钥文件,一般是key文件     ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.] [TLSv1.];       支持ssl协议版本,早期为ssl现在是TSL,默认为后三个     ssl_session_cache off | none | [builtin[:size]] [shared:name:size];       配置ssl缓存         off:           关闭缓存         none:           通知客户端支持ssl session cache,但实际不支持         builtin[:size]:          使用OpenSSL内建缓存,为每worker进程私有         [shared:name:size]:          在各worker之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大小,一兆可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称。         ssl_session_timeout time;          客户端连接可以复用ssl session cache中缓存的有效时长,默认5m

三.自签名证书

1>.生成CA证书

[[email protected] ~]# cd /yinzhengjie/softwares/nginx/ [[email protected] /yinzhengjie/softwares/nginx]# [[email protected] /yinzhengjie/softwares/nginx]# mkdir certs && cd certs [[email protected] /yinzhengjie/softwares/nginx/certs]# [[email protected] /yinzhengjie/softwares/nginx/certs]# openssl req -newkey rsa: -nodes -sha256 -keyout ca.key -x509 -days -out ca.crt    #生成CA自签名证书 Generating a bit RSA private key ............................................................................................................................................................................ ......................++.................++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name ( letter code) [XX]:CN                                    #指定国家代码,中国的国家代码一般为"CN" State or Province Name (full name) []:beijing                               #省份,如果是直辖市就直接写直辖市的名称即可,也可以写简称 Locality Name (eg, city) [Default City]:beijing                              #城市名称 Organization Name (eg, company) [Default Company Ltd]:yinzhengjie                   #公司名称,自定义即可,写你们公司名称 Organizational Unit Name (eg, section) []:devops                             #指定公司的部门 Common Name (eg, your name or your server's hostname) []:node101.yinzhengjie.org.cn        #一般写当前主机名称即可 Email Address []:[email protected]                                     #此处需要写邮箱,当然你也可以不写它并不会影响证书的生成 [[email protected] /yinzhengjie/softwares/nginx/certs]# [[email protected] /yinzhengjie/softwares/nginx/certs]# ll total -rw-r--r-- root root Dec : ca.crt                              #公钥 -rw-r--r-- root root Dec : ca.key                              #私钥 [[email protected] /yinzhengjie/softwares/nginx/certs]#

2>.生成证书请求文件

[[email protected] /yinzhengjie/softwares/nginx/certs]# ll total -rw-r--r-- root root Dec : ca.crt -rw-r--r-- root root Dec : ca.key [[email protected] /yinzhengjie/softwares/nginx/certs]# openssl req -newkey rsa: -nodes -sha256 -keyout www.yinzhengjie.org.cn.key -out www.yinzhengjie.org.cn.csr Generating a bit RSA private key ............................................................................................................................................................................ ......................................++................................................................................................................................++ writing new private key to 'www.yinzhengjie.org.cn.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name ( letter code) [XX]:CN State or Province Name (full name) []:beijing Locality Name (eg, city) [Default City]:beijing Organization Name (eg, company) [Default Company Ltd]:yinzhengjie Organizational Unit Name (eg, section) []:devops Common Name (eg, your name or your server's hostname) []:www.yinzhengjie.org.cn        #注意,这里可用写泛域名,在生产环境中最好写你公司的网站地址,除非你有多个网站需要使用证书可用申请泛域名,相对来说比较贵。 Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:                                         #注意,这里不要输入密码,直接回车即可,否则nginx在使用证书时需要交互式输入密码! An optional company name []: [[email protected] /yinzhengjie/softwares/nginx/certs]# [[email protected] /yinzhengjie/softwares/nginx/certs]# ll total -rw-r--r-- root root Dec : ca.crt -rw-r--r-- root root Dec : ca.key -rw-r--r-- root root Dec : www.yinzhengjie.org.cn.csr               #专门用于网站的公钥,但是该公钥还没有被签发证书,需要找咱们自建的CA服务器做证书签发,我们有时候也可以说它是证书请求文件。 -rw-r--r-- root root Dec : www.yinzhengjie.org.cn.key               #专门用于网站的私钥 [[email protected] /yinzhengjie/softwares/nginx/certs]# [[email protected] /yinzhengjie/softwares/nginx/certs]#

3>.签发证书

[[email protected] /yinzhengjie/softwares/nginx/certs]# ll total -rw-r--r-- root root Dec : ca.crt -rw-r--r-- root root Dec : ca.key -rw-r--r-- root root Dec : www.yinzhengjie.org.cn.csr -rw-r--r-- root root Dec : www.yinzhengjie.org.cn.key [[email protected] /yinzhengjie/softwares/nginx/certs]# [[email protected] /yinzhengjie/softwares/nginx/certs]# openssl x509 -req -days -in www.yinzhengjie.org.cn.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.yinzhengjie.org.cn.crtSignature ok subject=/C=CN/ST=beijing/L=beijing/O=yinzhengjie/OU=devops/CN=www.yinzhengjie.org.cn/[email protected] Getting CA Private Key [[email protected] /yinzhengjie/softwares/nginx/certs]# [[email protected] /yinzhengjie/softwares/nginx/certs]# ll total -rw-r--r-- root root Dec : ca.crt -rw-r--r-- root root Dec : ca.key -rw-r--r-- root root Dec : ca.srl -rw-r--r-- root root Dec : www.yinzhengjie.org.cn.crt            #这就是被咱们CA服务器签发证书的公钥啦,这个证书文件就可用使用了,生产环境别人就这样把你们公司钱赚走了 -rw-r--r-- root root Dec : www.yinzhengjie.org.cn.csr -rw-r--r-- root root Dec : www.yinzhengjie.org.cn.key [[email protected] /yinzhengjie/softwares/nginx/certs]# [[email protected] /yinzhengjie/softwares/nginx/certs]#

4>.验证证书内容

[[email protected] /yinzhengjie/softwares/nginx/certs]# openssl x509 -in www.yinzhengjie.org.cn.crt -noout -text Certificate: Data: Version: (0x0) Serial Number: df:db:ee:8e:fc:c7::b7 Signature Algorithm: sha256WithRSAEncryption Issuer: C=CN, ST=beijing, L=beijing, O=yinzhengjie, OU=devops, CN=node101.yinzhengjie.org.cn/[email protected] Validity Not Before: Dec :: GMT Not After : Nov :: GMT Subject: C=CN, ST=beijing, L=beijing, O=yinzhengjie, OU=devops, CN=www.yinzhengjie.org.cn/[email protected] Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: ( bit) Modulus: :cb:::2f:d1:a6:0a:ec:be::::a9:7e: 1f:8a:e4:da:d0:b0:d6:a6:ad:ec:c9::de:4e:2a: :9f:2d:6f:e8::b4::e2::6e:e9:2b:cf:8e: :5b:a1:3b:a2:::bc::e2:7b::::: fb:::d9:6f:::2e:ac::::d5:9a:1e: c2::d8::e0:b5::::b8:8f:d8:ad::c2: :::a5:f1:de::bc::::::c6:: fd:3a:2e::a0:5d:::d2::d3:8c::de:9c: :bc:d9::6e:ac:9e:::e8:ab:c4:da::: d0::da::3b::::c2::0f:a8:::3b: ::b2:5e:::9c:0f:3b:ae:eb:fa:6a:0c:: bc::c3:3c:c3:ee:e0::da:3d:d3::::a5: :ae:3c:c2:b4:ca:dc::e2::ea:c9:bd:a4:dc: fc:dd::::::9f:1a:0b:8b:d7:6c:e2:2d: fe::::a1:::8c:2a:b8:e9:f4::ac:a6: ff::d0::ef:df:3d::ff:e8:d8:::d5:: :1c:8f::::::f6:f9:a4::ca:c7:9d: cf:c4:3f:e7:7f:::a4::8c:7d:::a7:: f0:a5:b7::2c:a4:::4e:ff:f3:c7:4d:f8:d5: 9f::f3::::b8:b5:4d:a3::bd::ab:a7: e4::c3::7e:f9:8a:5d:e0:c5:e3:::7c:: ::fd:::bc:c7:::::f3::e0:: :3a::9d:8b:fa:ad:3c:3f:::1f:ea:4d:0f: f7:c9:::2b:1a:b8:2f:4a:9b:d6:f4::d4:2d: ff:6e:0f:fb:7d:::4a:9e::9e:b1:7d::c3: dd::6f:::f3:1a:7b:3a:ff:dd:ea:d5:3a:: ::c8::::6f::b7::d1:4b:e0::bc: ba:5a::3d:d8:fe:ab:ee:9c::df:e2:::: :f5:9e:::2b::0c:d3:5a::f8:::: :::5d:e3:::cc:b7:6b:f3::c3::c8: :6f:3b::::3a:ab:9d:e4:4c:df:3a::0a: ::cb:::f1:a4:e1:a2:c6:::ad:5d:d5: f9::5b:f8:::bb::c9:5f:fb:9b::c2:2c: ::4a:b0:9d::eb::c0:2e::a0:8a::: ::8b Exponent: (0x10001) Signature Algorithm: sha256WithRSAEncryption :cc::::dc:b1:a3:9b:ed:0f:7f::::6f::5a: c6:ea:5c:::c2:4d:8b:a8:2c:4a:e9::::d6::: e9:1c::d7::0e:be:8a:f2:a8::::c4:fa:a0:5b:eb: :1e:ac:bf:::d3:::::5d::d0::ea:d4:8e: fe::5a:f1:a8::1c:::b9::e9:5f:a8:1d:f2:c8:: ::2d:c1::f2:6f:ad:0d::::0e:6d:d3:5e:b7:d4: ab:f5:a3:::cd:5f:dc:f1:6f::be:ec:ca:6b:da:ba:d9: bf:b4:::::cb:f1:c4:fe:b8:ab:9a:0e:::e2:5c: 5b:::9d::::d2:da:ed::2b:::f6::e4:e1: :::af:5f:::::ef:fd:1f:d2:cf::de::: :a0:::c4:ce:::e2:::3b::9b:a0:9e:cb:: 4e:::6e:8e:c1:f5:ea::d2:fa::9a:7b:fa:7a::: f5:8a:e4:e4:1d:dd:2b:8d:b7::::::c8:fb::a4: 4a::f0::be:9c::cb:::dc::::4d:cb::: de:::::b7:4e::dc:2d::ff::::cf::: :::b5:a1:7c::c5:8e::8b:a9:b5::fd:::: e4::be:c6::a9::2c:::5b:::1c:d8:ab:8a:0a: e5:e4:c5:c6:9a:::d5:af:b8:d1::::1e:b3::: b6::e4:::::d5:8d::::3f:a4:7e:0a:ec:: ::e8:6c:cc:ec:::ff::8c:d5::ad:bd:dc:6b:: c6::e8:4c:::2e::bb:a9:e8:d5:b1::0c:f9:ab:3c: e2:e1:2f:ff:::c5::::1d:7e::ca:b3:e2::c9: 3b::ad:e2:4e::b1::fa:8f:ff:c7::::1d:8a:6d: f4::b0::db::4d::3e:4d:cc:5d::e7:ea:::c7: 2b:4e:ed:7f:2f:e8:::7b:e4:::dc:d3::6c:fe:: cb:e2:f3::8a::a3:ef::df::b2::::5b:1e:8b: 9a:e0::f3:7d::0c:b8::6c:7a::ff:7d::fc:f2:: 2e:fb:::4f::3d::c4::fc:7e:0b::8c:::: ae:f7::d1:::b9:c3 [[email protected] /yinzhengjie/softwares/nginx/certs]# [[email protected] /yinzhengjie/softwares/nginx/certs]#

四.Nginx证书配置

1>.编辑nginx的主配置文件

[[email protected] ~]# cat /yinzhengjie/softwares/nginx/conf/nginx.conf worker_processes ; worker_cpu_affinity ; events { worker_connections ; use epoll; accept_mutex on; multi_accept on; } http { include mime.types; default_type text/html; charset utf-; log_format my_access_json '{"@timestamp":"$time_iso8601",' '"host":"$server_addr",' '"clientip":"$remote_addr",' '"size":$body_bytes_sent,' '"responsetime":$request_ti me,' '"upstreamtime":"$upstream_response_time",' '"upstreamhost":"$upstream_addr",' '"http_host":"$host",' '"uri":"$uri",' '"domain":"$host",' '"xff":"$http_x_forwarded_for",' '"referer":"$http_referer",' '"tcp_xff":"$proxy_protocol_addr",' '"http_user_agent":"$http_user_agent",' '"status":"$status"}'; access_log logs/access_json.log my_access_json; ssl_certificate /yinzhengjie/softwares/nginx/certs/www.yinzhengjie.org.cn.crt; ssl_certificate_key /yinzhengjie/softwares/nginx/certs/www.yinzhengjie.org.cn.key; ssl_session_cache shared:sslcache:20m; ssl_session_timeout 10m; include /yinzhengjie/softwares/nginx/conf.d/*.conf; } [[email protected] ~]# [[email protected] ~]# nginx -t nginx: the configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf syntax is ok nginx: configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf test is successful [[email protected] ~]#

2>.编辑nginx的子配置文件

[[email protected] ~]# cat /yinzhengjie/softwares/nginx/conf.d/https.conf server { listen ; listen ssl; server_name www.yinzhengjie.org.cn; location / { root /yinzhengjie/data/web/nginx/static; index index.html; } } [[email protected] ~]# [[email protected] ~]# nginx -t nginx: the configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf syntax is ok nginx: configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf test is successful [[email protected] ~]# [[email protected] ~]#

3>.创建测试数据

[[email protected] ~]# mkdir -pv /yinzhengjie/data/web/nginx/static          #创建存放数据的目录 mkdir: created directory ‘/yinzhengjie/data’ mkdir: created directory ‘/yinzhengjie/data/web’ mkdir: created directory ‘/yinzhengjie/data/web/nginx’ mkdir: created directory ‘/yinzhengjie/data/web/nginx/static’ [[email protected] ~]# [[email protected] ~]# cat /yinzhengjie/data/web/nginx/static/index.html        #创建首页网站 字体的样式 .hello{ color: red; font-size: 30px; font-family: "curlz mt","华文彩云","arial", "微软雅黑"; }

2019尹正杰到此一游,在这里提前祝大家2020年新年快乐~

[[email protected] ~]# [[email protected] ~]#

4>.启动nginx服务

[[email protected] ~]# netstat -untalp | grep nginx [[email protected] ~]# [[email protected] ~]# nginx [[email protected] ~]# [[email protected] ~]# netstat -untalp | grep nginx tcp 0.0.0.0: 0.0.0.0:* LISTEN /nginx: master tcp 0.0.0.0: 0.0.0.0:* LISTEN /nginx: master [[email protected] ~]# [[email protected] ~]# grep 172.30.1.101 /etc/hosts 172.30.1.101 node101.yinzhengjie.org.cn www.yinzhengjie.org.cn [[email protected] ~]#

5>.客户端浏览器访问

  如下图所示,可用正常访问http协议的80端口

  如下图所示,可用正常访问https协议的443端口,但是会有如下图所示的提示信息,点击"高级"

如下图所示,点击咱们的网址,就可用正常打开网页啦.

五.博主推荐阅读

实现多域名HTTPS: https://www.cnblogs.com/yinzhengjie/p/12056590.html 局域网私有CA(Certificate Authority)证书服务器实战篇: https://www.cnblogs.com/yinzhengjie/p/12075752.html Nginx 高级配置-https 功能的更多相关文章 Nginx 高级配置-压缩功能

Nginx 高级配置-压缩功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx压缩相关参数概述 1>.gzip on | off; Nginx支持对指定类型的文 ...

Nginx 高级配置-实现多域名HTTPS

Nginx 高级配置-实现多域名HTTPS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx支持基于单个IP实现多域名的功能 Nginx支持基于单个IP实现多域名的功能 ...

Nginx 高级配置-变量使用

Nginx 高级配置-变量使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  nginx的变量可以在配置文件中引用,作为功能判断或者日志等场景使用,变量可以分为内置变量和自定义变 ...

Nginx 高级配置-第三方模块编译

Nginx 高级配置-第三方模块编译 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 第三模块是对nginx 的功能扩展,第三方模块需要在编译安装Nginx 的时候使用参数--add ...

Nginx 高级配置--关于favicon.ico

Nginx 高级配置--关于favicon.ico 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.浏览器会默认帮咱们访问官网的图标 1>.浏览器访问网站"htt ...

Nginx 高级配置-自定义json格式日志

Nginx 高级配置-自定义json格式日志 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在大数据运维工作中,我们经常会使用flume,filebeat相关日志收集工具取收集日志 ...

Nginx 高级配置-状态页配置

Nginx 高级配置-状态页配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 建议将nginx的监控状态的值通过zabbix或者Open-Falcon之类的监控工具来监控状态,并 ...

Linux下Apache配置HTTPS功能

Apache配置HTTPS功能  转 https://www.cnblogs.com/liaojiafa/p/6028816.html 一.yum 安装openssl和openssl-devel,ht ...

Nginx中配置https中引用http的问题

Nginx中配置https中引用http的问题 遇到问题: 今天公司要在后台增加直播入口,使用腾讯云的实时音视频,要求是必须使用https,在配置完强制跳转https候,发现后台无法上传图片,在浏览器 ...

随机推荐 ActionResult源码分析笔记

ActionResult是一个抽象类: public abstract class ActionResult { public abstract void ExecuteResult(Controll ...

appium--多点触控

前戏 对于放大缩小的,我们使用前面的滑动是不行的,例如地图的放大缩小,这里就要用到多点触控了 MultiAction是多点触控的类,可以模拟多点触控操作,主要包含add()和perform()两个方法 ...

KMP——从入门到不会打题

KMP——从入门到不会打题 前言 如果你不了解哈希,建议先观看本蒟蒻的另一篇博客,对哈希有一定的理解   哈希大法吼 KMP算法,别名烤馍片或者看毛片,由烤馍片男子天团三位神犇同时发现的一种强大的单模 ...

[LeetCode] 322. Coin Change 硬币找零

You are given coins of different denominations and a total amount of money amount. Write a function ...

NOI 2019 退役记

非常抱歉,因为不退役了,所以这篇退役记鸽了.

copy running-config startup-config 与 copy startup-config running-config

1.copy running-config startup-config 与 copy startup-config running-config 两者有什么不同???ANS:running-conf ...

Visual Studio 调试系列9 调试器提示和技巧

系列目录     [已更新最新开发文章,点击查看详细] 01 固定数据提示 如果你在调试时,经常将鼠标悬停在数据提示上,就可能想固定变量的数据提示,方便自己随时查看. 即使在重新启动后,固定的变量也能 ...

SQLAIchemy(二)ORM 相关

0. 前言 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术 简单的说,ORM是通过使用描述对象和数据库之 ...

c# mongodb时间类型字段保存时相差八个小时解决办法

/// /// 添加时间 /// [BsonDateTimeOptions(Kind = DateTimeKind.Local)] p ...

Docker 创建、运行、查看、删除容器

Docker 创建.运行.查看.删除容器 Step 1: 查看docker程序是否存在, 功能是否正常. sudo docker info 若不正常请参考下文: Docker安装和程序创建 Step ...



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3